/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package rn;

import controladores.IngresoCombustibleJpaController;
import controladores.SalidaCombustibleJpaController;
import controladores.TanqueJpaController;
import controladores.TipoCombustibleJpaController;
import controladores.exceptions.NonexistentEntityException;
import entidades.IngresoCombustible;
import entidades.SalidaCombustible;
import entidades.Tanque;
import entidades.TipoCombustible;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Pablo
 */
public class CombustibleRN {

    private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("Hormicat-SistemaIntegralPU");
    private static TanqueJpaController tanqueJpaController = new TanqueJpaController(factory);
    private static TipoCombustibleJpaController tipoCombustibleJpaController = new TipoCombustibleJpaController(factory);
    private static IngresoCombustibleJpaController ingresoCombustibleJpaController = new IngresoCombustibleJpaController(factory);
    private static SalidaCombustibleJpaController salidaCombustibleJpaController = new SalidaCombustibleJpaController(factory);
    
    //Tanque
    public static void create(Tanque repuesto) {
        tanqueJpaController.create(repuesto);
    }

    public static void edit(Tanque repuesto) {
        try {
            tanqueJpaController.edit(repuesto);
        } catch (Exception ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void eliminar(Long id) {
        try {
            tanqueJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<Tanque> getTodosVechiculos() {
        return tanqueJpaController.findTanqueEntities();
    }

    public static boolean yaExisteTanque(String value, Long id_excepcion) {
        return tanqueJpaController.yaExiste(value, id_excepcion);
    }

    //TipoCombustible
    public static void create(TipoCombustible tipoCombustible) {
        tipoCombustibleJpaController.create(tipoCombustible);
    }

    public static void edit(TipoCombustible tipoCombustible) {
        try {
            tipoCombustibleJpaController.edit(tipoCombustible);
        } catch (Exception ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void eliminarTipoCombustible(Long id) {
        try {
            tipoCombustibleJpaController.destroy(id);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(RepuestoRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static List<TipoCombustible> getTodosTipoCombustible() {
        return tipoCombustibleJpaController.findTipoCombustibleEntities();
    }

    public static boolean yaExisteTipoCombustible(String value, Long id_excepcion) {
        return tipoCombustibleJpaController.yaExiste(value, id_excepcion);
    }
    
    public static void create(IngresoCombustible ingreso) {
        ingresoCombustibleJpaController.create(ingreso);
    }

    public static TipoCombustible findTipoCombustible(Long id_long) {
      return tipoCombustibleJpaController.findTipoCombustible(id_long);
    }

    public static Tanque getTanquePorID(Long id_long) {
        return tanqueJpaController.findTanque(id_long);
    }
    
    public static Long getIdUltimoIngreso(){
        return ingresoCombustibleJpaController.getIdUltimoIngreso();        
    }
    
    //Salida combustible
    public static void create(SalidaCombustible salida) {
        salidaCombustibleJpaController.create(salida);
    }

    public static SalidaCombustible findSalidaCombustible(Long id_long) {
      return salidaCombustibleJpaController.findSalidaCombustible(id_long);
    }
    
    public static void modificarSalidaCombustible(SalidaCombustible salida){
        try {
            salidaCombustibleJpaController.edit(salida);
        } catch (Exception ex) {
            Logger.getLogger(CombustibleRN.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public static Long getIdUltimoSalida(){
        return salidaCombustibleJpaController.getIdUltimoSalida();
    }

    public static List<SalidaCombustible> getSalidaCombustiblePorFecha(Date desde, Date hasta){
        return salidaCombustibleJpaController.getSalidaCombustiblePorFecha(desde, hasta);
    }
    
    //Ingreso Combustible
    public static List<IngresoCombustible> getIngresoCombustiblePorFecha(Date desde, Date hasta){
        return ingresoCombustibleJpaController.getIngresoCombustiblePorFecha(desde, hasta);
    }
   


}
